package com.rem.designPattern.proxy代理.sstatic;

import java.math.BigDecimal;

/**
 * 代理模式
 * 为其他对象提供一种代理以控制对这个对象的访问
 * 静态代理
 * <p>
 * 卖票接口
 *
 * @author Rem
 * @date 2022-11-18
 */
public interface SellTickets {

    Boolean sell(BigDecimal money);
}

/**
 * 火车站
 */
class TrainStation implements SellTickets {

    @Override
    public Boolean sell(BigDecimal money) {
        if (money.compareTo(new BigDecimal(10)) > 0) {
            System.out.println("火车站卖票10元一张~~~成功,找零：" + money.subtract(new BigDecimal(10)));
            return true;
        } else {
            System.out.println("火车站卖票~~~失败");
            return false;
        }
    }
}

/**
 * 代售点
 */
class ProxyPoint implements SellTickets {

    private TrainStation station;

    public void setStation(TrainStation station) {
        this.station = station;
    }

    @Override
    public Boolean sell(BigDecimal money) {
        System.out.println("代理点收取一些服务费用 1 元");
        return station.sell(money.subtract(BigDecimal.ONE));
    }
}